import request from '@/utils/request';

const LOG_BASE_URL = '/admin/log';

const LogAPI = {
  /**
   * 获取日志分页列表
   *
   * @param queryParams 查询参数
   */
  getPage(queryParams: LogPageQuery) {
    return request<any, any>({
      url: `${LOG_BASE_URL}/page`,
      method: 'get',
      params: queryParams,
    });
  },
  /**
   * 创建日志
   *
   * @param log 日志
   */
  createLog(log: LogPageVO) {
    return request<any, any>({
      url: `${LOG_BASE_URL}/save`,
      method: 'post',
      data: log,
    });
  },
  /**
   * 删除日志
   *
   * @param log
   * @returns
   */
  deleteLogs(ids: string[]) {
    return request<any, any>({
      url: `${LOG_BASE_URL}`,
      method: 'delete',
      data: ids,
    });
  },
  /**
   * 导出日志
   *
   * @param queryParams
   * @returns
   */
  exportLog(queryParams: LogPageQuery) {
    return request<any, any>({
      url: `${LOG_BASE_URL}/export`,
      method: 'get',
      params: queryParams,
      responseType: 'blob',
    });
  },
  /**
   * 获取访问趋势
   *
   * @param queryParams
   * @returns
   */
  getVisitTrend(queryParams: VisitTrendQuery) {
    return request<any, VisitTrendVO>({
      url: `${LOG_BASE_URL}/visit-trend`,
      method: 'get',
      params: queryParams,
    });
  },

  /**
   * 获取访问统计
   *
   * @param queryParams
   * @returns
   */
  getVisitStats() {
    return request<any, VisitStatsVO>({
      url: `${LOG_BASE_URL}/visit-stats`,
      method: 'get',
    });
  },
};

export default LogAPI;

/**
 * 日志分页查询对象
 */
export interface LogPageQuery extends LogPageVO {
  current: number;
  size: number;
  total: number;
}

/**
 * 系统日志分页VO
 */
export interface LogPageVO {
  // 日志类型
  logType?: any;
  // 日志标题
  title?: any;
  // 服务ID
  serviceId?: any;
  // 远程地址
  remoteAddr?: any;
  // 用户代理
  userAgent?: any;
  // 请求URL
  requestUri?: any;
  // 请求方法
  method?: any;
  // 请求参数
  params?: any;
  // 执行时间
  time?: any;
  // 异常信息
  exception?: any;
  // 创建人
  createBy?: any;
  // 创建时间
  createTime?: any;
  // 修改人
  updateBy?: any;
  // 修改时间
  updateTime?: any;
}

/**  访问趋势视图对象 */
export interface VisitTrendVO {
  /** 日期列表 */
  dates: string[];
  /** 浏览量(PV) */
  pvList: number[];
  /** 访客数(UV) */
  uvList: number[];
  /** IP数 */
  ipList: number[];
}

/** 访问趋势查询参数 */
export interface VisitTrendQuery {
  /** 开始日期 */
  startDate: string;
  /** 结束日期 */
  endDate: string;
}

/**  访问统计 */
export interface VisitStatsVO {
  /** 今日访客数(UV) */
  todayUvCount: number;
  /** 总访客数 */
  totalUvCount: number;
  /** 访客数同比增长率（相对于昨天同一时间段的增长率） */
  uvGrowthRate: number;
  /** 今日浏览量(PV) */
  todayPvCount: number;
  /** 总浏览量 */
  totalPvCount: number;
  /** 同比增长率（相对于昨天同一时间段的增长率） */
  pvGrowthRate: number;
}
